From e5d921b098ba854b0d11f7535db96a167d1ec62f Mon Sep 17 00:00:00 2001 From: Sven Neumann Date: Mon, 31 Dec 2007 15:29:06 +0000 Subject: [PATCH] completely fill the lookup tables for conversion from float to integer. 2007-12-30 Sven Neumann * extensions/gggl-lies.c (table_init): completely fill the lookup tables for conversion from float to integer. svn path=/trunk/; revision=268 --- ChangeLog | 5 +++++ extensions/gggl-lies.c | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 93a4c9e..e5f2b2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-12-30 Sven Neumann + + * extensions/gggl-lies.c (table_init): completely fill the lookup + tables for conversion from float to integer. + 2007-12-30 Kevin Cozens * extensions/Makefile.am: Use SHREXT instead of hard-coded ".so". diff --git a/extensions/gggl-lies.c b/extensions/gggl-lies.c index d3e33fa..c3e726e 100644 --- a/extensions/gggl-lies.c +++ b/extensions/gggl-lies.c @@ -64,20 +64,21 @@ static int table_inited = 0; static void table_init (void) { + int i; + if (table_inited) return; table_inited = 1; /* fill tables for conversion from integer to float */ - { - int i; - for (i = 0; i < 1 << 8; i++) - { - table_8_F[i] = (i * 1.0) / 255.0; - } - for (i = 0; i < 1 << 16; i++) + for (i = 0; i < 1 << 8; i++) + { + table_8_F[i] = (i * 1.0) / 255.0; + } + for (i = 0; i < 1 << 16; i++) + { table_16_F[i] = (i * 1.0) / 65535.0; - } + } /* fill tables for conversion from float to integer */ { union @@ -89,11 +90,13 @@ table_init (void) u.s[0] = 0.0; - for (u.s[1] = 0; u.s[1] < 65535; u.s[1] += 1) + for (i = 0; i < 1 << 16; i++) { unsigned char c; unsigned short s; + u.s[1] = i; + if (u.f <= 0.0) { c = 0; -- 2.30.2